#ifndef __CDS_COMMON_H__
#define __CDS_COMMON_H__

#ifdef __cplusplus
extern "C" {
#endif 

//定义调试打印宏
#ifdef DEBUG
    #define debug(...) do{\
        printf("file:[%s] line: %d: ",__FILE__,__LINE__);\
        printf(__VA_ARGS__);\
    }while(0)
#else
    #define debug(msg)
#endif

//计算type类型的成员member的地址偏移量
#define offset_of(type, member) ((unsigned long)(&(((type *)0)->member)))

//获取type类型的地址, 其中 ptr是type类型的成员member的地址
#define container_of(ptr, type, member) \
    ((type *)((char *)ptr-offset_of(type,member)))

#ifdef __cplusplus
}
#endif 
#endif // __CDS_COMMON_H__
